值类型(基本类型)（栈内存）：字符串（String）、数字(Number)、布尔(Boolean)、空（Null）、未定义（Undefined）、Symbol。
——在存储时变量中存储的是值本身，因此叫做值类型。
引用数据类型(对象类型)（栈内存 + 堆内存）：对象(Object)、数组(Array)、函数(Function)，还有两个特殊的对象：正则（RegExp）和日期（Date）。
——在存储时变量中存储的是地址(引用)，因此叫做引用数据类型(栈中的变量存储的是对象的地址即引用，堆中存储对象)。
NaN 是 JavaScript 中的一个特殊值，全称为 "Not a Number"（非数字）。它表示一个计算结果或操作无法返回有效的数字，通常出现在数学运算失败或类型不匹配时。（虽然 NaN 表示“非数字”，但它本身属于
JavaScript 的数字类型（Number）。NaN 不等于任何值，包括它自己）
返回数据类型：
// 运算符(操作符)形式（推荐）
typeof value;
// 函数形式（较少用）
typeof(value);
类型转换：隐式转换、显式转换
隐式转换规则：+号两边只要有一个是字符串，都会把另外一个转换为字符串，除了+号以外的算数运算符如-*/等都会把数据转换为数字类型，但+号作为正号解析可以把数据转换为数字类型
显式转换：
Number(value) 转换为数字，要求整个字符串必须能完全转换为数字，否则返回 NaN
parseInt(value)只保留整数，从左到右解析字符串，直到遇到第一个无效字符，忽略后续内容
parseFloat(value)可以保留小数，从左到右解析字符串，直到遇到第一个无效字符，忽略后续内容
Boolean('pink')转换为布尔值
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let r = prompt('请输入圆的半径：')
        console.log(typeof r)
        let result = 3.14 * r ** 2
        document.write(result)
        let num = Number(prompt('输入年薪：'))
        let add = Number(prompt("输入涨薪："))
        console.log(`总薪资：${num + add}`)
    </script>
</body>

</html>